Session Initiation Protocol (SIP) is an application-layer control (e.g., signaling) protocol for creating, modifying, and terminating sessions with one or more participants. These sessions may include Internet-based telephone calls, multimedia distribution, multimedia conferences, instant messaging conferences, interactive voice response (IVR) sessions, automated and manual operator services, automatic call distribution, call routing, etc. SIP invitations (or INVITES) may be used to create sessions and may carry session descriptions that allow participants to agree on a set of compatible media types. SIP may use proxy servers to help route requests to a user's current location, authenticate and authorize users for services, implement provider call-routing policies, and/or provide other features to users.
SIP can be transmitted over multiple transport protocols, including Transmission Control Protocol (TCP) and User Datagram Protocol (UDP). With SIP, each end-to-end transmission is negotiated on a hop-by-hop manner. Each network element (e.g., a SIP proxy or SIP server) can determine which transport protocol to use. For example, a network element may use TCP to talk to the originating device and use UDP to transmit that same traffic to the next hop, and so forth. Since UDP typically has less overhead compared to other transport protocols, UDP may be a preferred method for transmitting low bandwidth applications, such as mobile voice or text messages. However, UDP is not a connection-oriented protocol and does not negotiate for end-to-end communication. Therefore, UDP is inherently prone to congestion problems. UDP does not have a mechanism to detect, prevent, or avoid congestion. This could become problematic when used with SIP.
Network elements using SIP may enforce a limit on the maximum size (or length) of a message to a destination. For example, a network element that detects an incoming SIP message that exceeds UDP size limits will return a “513—message too large” error message to the message originator, thus failing to deliver the incoming SIP message. A “513—message too large” error is defined by the Internet Engineering Task Force's (IETF) Request for Comments (RFC) 3261 (Section 21.5.7). The maximum size of a message is limited based on the ability of a SIP proxy server to process the SIP request. When a SIP proxy server receives a request containing a message size that exceeds the maximum size for the proxy server, the proxy server returns a “513—message too large” error response to the message originator. The SIP proxy server then ends the request; hence failing the SIP session setup.